package top.humbleyuan.designmode.singleton;

/**
 * @Author HumbleYuan
 * @Date 2019/10/9 13:53
 * @Des 在调用实例方法时才创建实例，不支持并发
 */
public class LazySingleton {
    /**
     * 线程不安全的解释：
     * 线程A执行到1，此时未创建实例，进入，
     * 但cpu正好被B抢去，执行到1时，依然为实例，进入后实例化，返回实例对象s1
     * 此时cpu又重回A,A执行到2，再次实例化s2,返回s2,即创建了两个不同实例
     */
    private static LazySingleton singleton = null;

    private LazySingleton(){}

    public static LazySingleton getLazySingleton() {
        if(singleton == null)   //1
            singleton = new LazySingleton();    //2
        return singleton;
    }


}
